package com.zhuanzhuan.hero.user.facade.label;

import com.bj58.spat.scf.server.contract.annotation.ServiceContract;
import com.bj58.zhuanzhuan.zzentry.common.service.entity.ServiceHeaderEntity;
import com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult;
import com.bj58.zhuanzhuan.zzentry.common.service.model.openEntry.ZZHeader;
import com.zhuanzhuan.hero.user.dto.AddUserGroupLabelDTO;
import com.zhuanzhuan.hero.user.dto.DelUserGroupLabelDTO;
import com.zhuanzhuan.hero.user.dto.RelateUserGroupLabelDTO;
import com.zhuanzhuan.hero.user.vo.label.UserGroupLabelPageVO;
import com.zhuanzhuan.hero.user.vo.label.UserGroupLabelVO;

/**
 * @ClassName IUserGroupFacade
 * @Description  用户分组标签管理
 * @Author hanjunjun
 * @Date 2024/6/18 15:51
 */
@ServiceContract
public interface IUserGroupFacade {

    /**
     * 前端-分组标签-查询用户所有的分组标签、备注、隐私开关
     *
     * @param header
     * @param toUid
     * @return com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult<java.util.List<com.zhaunzhuan.hero.user.vo.UserGroupLabelVO>>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    ZZOpenScfBaseResult<UserGroupLabelPageVO> queryUserGroupLabels(@ZZHeader ServiceHeaderEntity header, Long toUid);

    /**
     * 前端-分组标签-新增一个分组标签
     *
     * @param addUserGroupLabelDTO
     * @return com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult<java.lang.Void>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    ZZOpenScfBaseResult<UserGroupLabelVO> addUserGroupLabel(@ZZHeader ServiceHeaderEntity header, AddUserGroupLabelDTO addUserGroupLabelDTO);

    /**
     * 前端-分组标签-删除用户分组标签
     *   将对应的关联关系也删除
     * @param delUserGroupLabelDTO
     * @return com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult<java.lang.Void>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    ZZOpenScfBaseResult<Boolean> delUserGroupLabels(@ZZHeader ServiceHeaderEntity header, DelUserGroupLabelDTO delUserGroupLabelDTO);

    /**
     * 前端-分组标签-分组标签关联到用户
     *
     * @param relateUserGroupLabelDTO
     * @return com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult<java.lang.Void>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    ZZOpenScfBaseResult<Boolean> relateUserGroupLabels(@ZZHeader ServiceHeaderEntity header,
        RelateUserGroupLabelDTO relateUserGroupLabelDTO);
}
